// 1. 导入 http 模块
const http = require('http')
const fs = require('fs')
const path = require('path')

// 2. 创建 web 服务器实例
const server = http.createServer()

// 3. 启动服务器
// 端口 在 0-65535
server.listen(3000, () => {
  // 输出之后 服务器已经启动
  console.log('my server start work')
})

// 4. 为服务器实例绑定 request 事件，监听客户端的请求
// 当客户端发送请求到服务器的时候，会触发这个事件
// 浏览器 往 服务器发请求
// 参数1 获取请求报文的信息
// 参数2 用来  设置响应报文
// favicon.ico浏览器会自动发过来的请求
//
server.on('request', (request, response) => {
  // 获取url地址
  let url = request.url
  // 设置响应的状态码--属性
  response.statusCode = 200
  if (url === '/' || url === '/index.html') {
    // 解析为 index.html
    url = '/index.html'
  }
  // 生成绝对路径 并读取
  const fullPath = path.join(__dirname, './www', url)
  try {
    // 读取出来的 内容 返回给浏览器即可
    // 尝试去读取文件
    const res = fs.readFileSync(fullPath)
    response.end(res)
  } catch (error) {
    // 出错了进入catch
    // console.log(error)
    response.end('<h1>404 Not Found</h1>')
  }
})
